<!DOCTYPE html>
<html lang="zh-Hans">

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
    <meta name="viewport"
        content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no">

    <link rel="stylesheet" href="./css/index.css" />
</head>

<body>
    <h1>JavaScript 数组</h1>
    <h2>参考链接</h2>
    <ul>
        <li><a target="_blank"
                href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array">JavaScript
                Array</a></li>
    </ul>


    <h2>摘抄</h2>
    <p>JavaScript的Array可以包含任意数据类型，并通过索引来访问每个元素</p>
    <ul>
        <li>
            <strong>属性</strong>

            <ul>
                <li><strong>Array.length</strong> length 是Array的实例属性。返回或设置一个数组中的元素个数。</li>
            </ul>
        </li>

        <li>
            <strong>修改器方法</strong>
            下面的这些方法会改变调用它们的对象自身的值：

            <ul>
                <li><strong>Array.prototype.pop()</strong> 删除数组的最后一个元素，并返回这个元素。</li>
                <li><strong>Array.prototype.push()</strong> 在数组的末尾增加一个或多个元素，并返回数组的新长度。</li>
                <li><strong>Array.prototype.reverse()</strong> 颠倒数组中元素的排列顺序，即原先的第一个变为最后一个，原先的最后一个变为第一个。</li>
                <li><strong>Array.prototype.shift()</strong> 删除数组的第一个元素，并返回这个元素。</li>
                <li><strong>Array.prototype.sort()</strong> 对数组元素进行排序，并返回当前数组。</li>
                <li><strong>Array.prototype.splice()</strong> 在任意的位置给数组添加或删除任意个元素。</li>
                <li><strong>Array.prototype.unshift()</strong> 在数组的开头增加一个或多个元素，并返回数组的新长度。</li>
            </ul>
        </li>


        <li>
            <strong>访问方法</strong>
            下面的这些方法绝对不会改变调用它们的对象的值，只会返回一个新的数组或者返回一个其它的期望值。

            <ul>
                <li><strong>Array.prototype.concat()</strong> 返回一个由当前数组和其它若干个数组或者若干个非数组值组合而成的新数组。</li>
                <li><strong>Array.prototype.join()</strong> 连接所有数组元素组成一个字符串。</li>
                <li><strong>Array.prototype.slice()</strong> 抽取当前数组中的一段元素组合成一个新数组。</li>
                <li><strong>Array.prototype.toString()</strong> 返回一个由所有数组元素组合而成的字符串。</li>
                <li><strong>Array.prototype.toLocaleString()</strong> 返回一个由所有数组元素组合而成的本地化后的字符串。</li>
                <li><strong>Array.prototype.indexOf()</strong> 返回数组中第一个与指定值相等的元素的索引，如果找不到这样的元素，则返回 -1。</li>
                <li><strong>Array.prototype.lastIndexOf()</strong> 返回数组中最后一个（从右边数第一个）与指定值相等的元素的索引，如果找不到这样的元素，则返回 -1。
                </li>
            </ul>
        </li>
        <li>
            <strong>迭代方法</strong>
            <ul>
                <li><strong>Array.prototype.forEach()</strong> 为数组中的每个元素执行一次回调函数。</li>
                <li><strong>Array.prototype.every()</strong> 如果数组中的每个元素都满足测试函数，则返回 true，否则返回 false。</li>
                <li><strong>Array.prototype.some()</strong> 如果数组中至少有一个元素满足测试函数，则返回 true，否则返回 false。</li>
                <li><strong>Array.prototype.filter()</strong> 将所有在过滤函数中返回 true 的数组元素放进一个新数组中并返回。</li>
                <li><strong>Array.prototype.map()</strong> 返回一个由回调函数的返回值组成的新数组。</li>
                <li><strong>Array.prototype.reduce()</strong>
                    从左到右为每个数组元素执行一次回调函数，并把上次回调函数的返回值放在一个暂存器中传给下次回调函数，并返回最后一次回调函数的返回值。</li>
                <li><strong>Array.prototype.reduceRight()</strong>
                    从右到左为每个数组元素执行一次回调函数，并把上次回调函数的返回值放在一个暂存器中传给下次回调函数，并返回最后一次回调函数的返回值。</li>
            </ul>
        </li>


    </ul>

    <h2>部分示例</h2>

    <h3>创建数组</h3>
    <pre>
var fruits = ['Apple', 'Banana'];

console.log(fruits.length);
// 2
    </pre>

    <h3>通过索引访问数组元素</h3>
    <pre>
var first = fruits[0];
// Apple

var last = fruits[fruits.length - 1];
// Banana
    </pre>

    <h3>遍历数组</h3>
    <pre>
fruits.forEach(function (item, index, array) {
    console.log(item, index);
});
// Apple 0
// Banana 1
    </pre>

    <h3>添加元素到数组的末尾</h3>
    <pre>
var newLength = fruits.push('Orange');
// newLength:3; fruits: ["Apple", "Banana", "Orange"]
    </pre>

    <h3>删除数组末尾的元素</h3>
    <pre>
var last = fruits.pop(); // remove Orange (from the end)
// last: "Orange"; fruits: ["Apple", "Banana"];
    </pre>

    <h3>删除数组最前面（头部）的元素</h3>
    <pre>
var first = fruits.shift(); // remove Apple from the front
// first: "Apple"; fruits: ["Banana"];
    </pre>
    <h3>添加元素到数组的头部</h3>
    <pre>
var newLength = fruits.unshift('Strawberry') // add to the front
// ["Strawberry", "Banana"];
    </pre>
    <h3>找出某个元素在数组中的索引</h3>
    <pre>
fruits.push('Mango');
// ["Strawberry", "Banana", "Mango"]

var pos = fruits.indexOf('Banana');
// 1
    </pre>
    <h3>通过索引删除某个元素</h3>
    <pre>
var removedItem = fruits.splice(pos, 1); // this is how to remove an item

// ["Strawberry", "Mango"]
    </pre>
    <h3>从一个索引位置删除多个元素</h3>
    <pre>
var vegetables = ['Cabbage', 'Turnip', 'Radish', 'Carrot'];
console.log(vegetables); 
// ["Cabbage", "Turnip", "Radish", "Carrot"]

var pos = 1, n = 2;

var removedItems = vegetables.splice(pos, n);
// this is how to remove items, n defines the number of items to be removed,
// from that position(pos) onward to the end of array.

console.log(vegetables); 
// ["Cabbage", "Carrot"] (the original array is changed)

console.log(removedItems); 
// ["Turnip", "Radish"]
    </pre>
    <h3>复制一个数组</h3>
    <pre>
var shallowCopy = fruits.slice(); // this is how to make a copy 
// ["Strawberry", "Mango"]
    </pre>




</body>

</html>